## 指定应用使用的 version 包，会通过 `-ldflags -X` 向该包中指定的变量注入值
VERSION_PACKAGE=gitee.com/youkelike/ziam/zutils/version
## 定义 VERSION 语义化版本号
ifeq ($(origin VERSION), undefined)
VERSION := $(shell git describe --tags --always --match='v*')
endif

## 检查代码仓库是否是 dirty（默认 dirty）
GIT_TREE_STATE:="dirty"
ifeq (, $(shell git status --porcelain 2>/dev/null))
    GIT_TREE_STATE="clean"
endif
GIT_COMMIT:=$(shell git rev-parse HEAD)

GO_LDFLAGS += \
    -X $(VERSION_PACKAGE).GitVersion=$(VERSION) \
    -X $(VERSION_PACKAGE).GitCommit=$(GIT_COMMIT) \
    -X $(VERSION_PACKAGE).GitTreeState=$(GIT_TREE_STATE) \
    -X $(VERSION_PACKAGE).BuildDate=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')

.PHONY: build
build: tidy # 编译源码，依赖 tidy 目标自动添加/移除依赖包。
	@go build -v -ldflags "$(GO_LDFLAGS)" -o main *.go

.PHONY: tidy
tidy:
	@go mod tidy